(broken未完成)AMD64平台上的又一个骚操作。直接包裹SHA算法进入若干汇编指令,大幅提升速度与效率。
SHA-Assembly(broken)
简介
Intel平台上的又一个骚操作。直接包裹SHA算法进入若干汇编指令,大幅提升速度与效率。
这种罕见的指令,一般编译器是不会编出来的,主要是用于手动编写。
目前只有SHA1与SHA256指令。
指令表
指令名 | Op1 | Op2 | Op3 | Opcode |
---|---|---|---|---|
SHA1RNDS4 | xmm(rw) | xmm/m128(r) | imm8 | 0F 3A CC /r ib |
SHA1NEXTE | xmm(rw) | xmm/m128(r) | N/A | 0F 38 C8 |
SHA1MSG1 | xmm(rw) | xmm/m128(r) | N/A | 0F 38 C9 |
SHA1MSG2 | xmm(rw) | xmm/m128(r) | N/A | 0F 38 CA |
指令名 | Op1 | Op2 | Op3 | Opcode |
---|---|---|---|---|
SHA256RNDS2 | xmm(rw) | xmm/m128(r) | <xmm0> (implicit) |
0F 38 CB/r |
SHA256MSG1 | xmm(rw) | xmm/m128(r) | N/A | 0F 38 CC/r |
SHA256MSG2 | xmm(rw) | xmm/m128(r) | N/A | 0F 38 CD/r |
SHA-1
关于初始化W_t
1 | // 递归版,符合fips原标准,但是效率太低 |
SHA1MSG1
此指令用于加速W(t-14)^W(t-16)
。
直接从官网链接来的图片。
根据图的意思就是:
1 | X0 = W0 ^ W2 |
所以说一个指令就能够执行4次W(t-14)^W(t-16)
。
结语
写不下去了。我发觉我的10750H不支持SHA扩展;但是AES是有的。待会复习完AES后去写AES汇编。
- 本文作者: Taardis
- 本文链接: https://taardisaa.github.io/2022/03/09/SHA Asm/
- 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!